Computer systems not only store data to be accessed both locally and through a network but they are also capable of performing a wide variety of data protection technologies. Data protection technologies can include, for example, backups, mirroring, snapshots, etc. Typically, the data stored on storage devices undergo modifications. Modifications can arise from user intervention, periodic system updates or alternations, computer initiated processes, or some other source. Whatever the source of the modifications, it is often useful to preserve and permit access to previous versions of the data such as, for example, files, directories and metadata.
Snapshots in general provide for taking a moment in time “snapshot” of a file, a directory, metadata, a group files, etc. If the files are later changed, a user can access the previous version of the file residing within a snapshot. For example, in a snapshot system which uses a Copy on Write (“CoW”) method, a snapshot of the data is taken at the time the data is first updated, e.g., storing the original data in the CoW snapshot and then updating the original data in its resident storage device. Thus, as original data that is a part of the snapshot is modified, deleted, written over, etc., the size of the snapshot can grow proportionately. As the amount of snapshots increase, the size necessary for snapshot storage can also increase.
One way of reducing the storage requirements for a set of snapshots is to provide for the deletion of a snapshot. For example, suppose a portion of a file system is used to develop an upcoming software release and during its development, snapshots are taken on a daily basis in order to preserve changes to files during the development process. When the software is release, there may no longer be a need to access previous versions of the software. Thus, a user can delete the entirety of a snapshot and potentially reclaim disk space. However, continuing the example, there may be cases where other data beyond software development data is retained within the daily snapshots, and that data is desirable to retain. In most cases, snapshots must be deleted in their entirety and there is no flexibility in selectively deleting individual files within an individual snapshot. Thus there is a need to provide flexibility in selectively deleting portions of a snapshot to free up data retained in a snapshot while continuing to retain wanted snapshot data.
Providing local and network access to data blocks or data files along with employing a myriad of data protection technologies often correlates to a competition for computer system resources. For example, most storage devices are limited in the amount of reads and writes that can take place during any given time period. If after every write to a storage device, a second write is made to backup device, a third write is made to a mirror, and a fourth write is made to a snapshot storage device, performance of the system during these consecutive or parallel read/writes may suffer.